// 导入必要的模块
const { LowSync } = require('lowdb');
const { JSONFileSync } = require('lowdb/node');
const path = require('path');

// 数据库文件路径
const dbPath = path.join(__dirname, '../data/db.json');

// 初始化数据库和默认数据
const defaultData = {
  users: [
    // 默认管理员用户（密码：admin123）
    {
      id: 1,
      username: 'admin',
      password: '$2b$10$7cZq3V8h5Xr5Xr5Xr5Xr5O4eKdGjY3jY3jY3jY3jY3jY3jY3jY3jY3j',
      email: 'admin@example.com',
      role: 'admin',
      createdAt: new Date().toISOString(),
      updatedAt: new Date().toISOString()
    }
  ],
  characters: [
    // 一些示例角色数据
    {
      id: 1,
      name: '爱因斯坦',
      description: '物理学家，相对论创始人',
      personality: '聪明、好奇、喜欢思考和解释复杂概念',
      avatar: 'https://example.com/avatars/einstein.png',
      categories: ['科学家', '历史人物'],
      createdAt: new Date().toISOString(),
      updatedAt: new Date().toISOString()
    },
    {
      id: 2,
      name: '莎士比亚',
      description: '英国著名剧作家和诗人',
      personality: '文学气息浓厚、善于表达情感、用词优美',
      avatar: 'https://example.com/avatars/shakespeare.png',
      categories: ['文学家', '历史人物'],
      createdAt: new Date().toISOString(),
      updatedAt: new Date().toISOString()
    }
  ],
  chatHistories: []
};

// 创建数据库实例
const adapter = new JSONFileSync(dbPath);
const db = new LowSync(adapter, defaultData);

// 读取数据库内容
function readDatabase() {
  db.read();
  return db.data;
}

// 写入数据库内容
function writeDatabase(data) {
  if (data) {
    db.data = data;
  }
  db.write();
}

// 导出数据库实例和工具函数
module.exports = {
  db,
  readDatabase,
  writeDatabase
};